/**
 * 
 */
package junit;

import java.util.ArrayList;
import java.util.Iterator;

import es.uab.es2.TimeTracker.nucli.Activitat;
import es.uab.es2.TimeTracker.nucli.Client;
import es.uab.es2.TimeTracker.nucli.Projecte;
import junit.framework.TestCase;

/**
 * @author sule
 *
 */
public class TestClient extends TestCase {
    
    private Projecte tArrel, tP1, tP2;
    //private Tasca tT3, tT2, tT1;
    /**
     * Funcionalitat: evitar el problema del magin number 
     * al checkstyle .
     */
    private static final long UN_SEGON = 1000;
    private static final long VINTIDOS = 22000;
    private static final long VINT = 20000;
    private static final long CATORZE = 14000;

    /* (non-Javadoc)
     * @see junit.framework.TestCase#setUp()
     */
    protected final void setUp() throws Exception {
        super.setUp();
        
    }
    public final void testArbre() {
        int i = 0, j = 0, k = 0;
        Client.crearArbre();
        tArrel = Client.getArrel();
        ArrayList<Activitat> hoja = tArrel.getActivitats();
        Iterator<Activitat> iter = hoja.iterator(); 
        while (iter.hasNext()) {
            
            Activitat actTemporal = iter.next();
            i++;
            assertNotNull("no hi ha cap objecte en arrel", actTemporal);
            
          }
        assertEquals("no hi ha el objectes corresponents en l'arrel", i, 1);
        tP1 = Client.getP1();
        hoja = tP1.getActivitats();
        iter = hoja.iterator(); 
        while (iter.hasNext()) {
            
            Activitat actTemporal = iter.next();
            j++;
            assertNotNull("no hi ha cap objecte en p1", actTemporal);
            
          }
        assertEquals("no hi ha els objectes corresponents en p2", j, 2);
        tP2 = Client.getP2();
        hoja = tP2.getActivitats();
        iter = hoja.iterator(); 
        while (iter.hasNext()) {
            
            Activitat actTemporal = iter.next();
            k++;
            assertNotNull("no hi ha cap objecte en p1", actTemporal);
            
          }
        assertEquals("no hi ha els objectes corresponents en p2", k, 2);
    }
    public final void testOpcioC() {
        long dInici = 0, dFinal = 0, diferencia = 0;
        Client.opcioC();
        tArrel = Client.getArrel();
        ArrayList<Activitat> hoja = tArrel.getActivitats();
        Iterator<Activitat> iter = hoja.iterator(); 
        
        tP1 = (Projecte) iter.next();
        dInici = tP1.getDataInicial().getTime() / UN_SEGON;
        dFinal = tP1.getDataFinal().getTime() / UN_SEGON;
        diferencia = dFinal - dInici;
       System.out.println("diferencia de la opcioC:" + diferencia);
       long durada = tP1.getDurada() / UN_SEGON;
        assertEquals(dFinal - dInici, VINTIDOS / UN_SEGON);
        assertEquals(durada, CATORZE / UN_SEGON);
        
    }
    public final void testOpcioB() {
        //tArrel= null;
        long dInici = 0, dFinal = 0, diferencia = 0;
        Client.opcioB();
        tArrel = Client.getArrel();
        ArrayList<Activitat> hoja = tArrel.getActivitats();
        Iterator<Activitat> iter = hoja.iterator(); 
        
        tP1 = (Projecte) iter.next();
       dInici = tP1.getDataInicial().getTime() / UN_SEGON;
       dFinal = tP1.getDataFinal().getTime() / UN_SEGON;
       diferencia = dFinal - dInici;
       System.out.println("diferencia de la opcioB" + diferencia);
       long durada = tP1.getDurada() / UN_SEGON;
        assertEquals(diferencia, VINT / UN_SEGON);
        assertEquals(durada, VINTIDOS / UN_SEGON);
        
    }


}
